home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_emacs.idb / usr / freeware / info / gnus-5.z / gnus-5
Encoding:
GNU Info File  |  1998-10-28  |  48.9 KB  |  1,286 lines

  1. This is Info file ../info/gnus, produced by Makeinfo-1.63 from the
  2. input file gnus.texi.
  3.  
  4.    This file documents Gnus, the GNU Emacs newsreader.
  5.  
  6.    Copyright (C) 1995,96 Free Software Foundation, Inc.
  7.  
  8.    Permission is granted to make and distribute verbatim copies of this
  9. manual provided the copyright notice and this permission notice are
  10. preserved on all copies.
  11.  
  12.    Permission is granted to copy and distribute modified versions of
  13. this manual under the conditions for verbatim copying, provided also
  14. that the entire resulting derived work is distributed under the terms
  15. of a permission notice identical to this one.
  16.  
  17.    Permission is granted to copy and distribute translations of this
  18. manual into another language, under the above conditions for modified
  19. versions.
  20.  
  21. 
  22. File: gnus,  Node: Unavailable Servers,  Prev: Servers and Methods,  Up: The Server Buffer
  23.  
  24. Unavailable Servers
  25. -------------------
  26.  
  27.    If a server seems to be unreachable, Gnus will mark that server as
  28. `denied'.  That means that any subsequent attempt to make contact with
  29. that server will just be ignored.  "It can't be opened," Gnus will tell
  30. you, without making the least effort to see whether that is actually
  31. the case or not.
  32.  
  33.    That might seem quite naughty, but it does make sense most of the
  34. time.  Let's say you have 10 groups subscribed to the server
  35. `nepholococcygia.com'.  This server is located somewhere quite far away
  36. from you, the machine is quite, so it takes 1 minute just to find out
  37. that it refuses connection from you today.  If Gnus were to attempt to
  38. do that 10 times, you'd be quite annoyed, so Gnus won't attempt to do
  39. that.  Once it has gotten a single "connection refused", it will regard
  40. that server as "down".
  41.  
  42.    So, what happens if the machine was only feeling unwell temporarily?
  43. How do you test to see whether the machine has come up again?
  44.  
  45.    You jump to the server buffer (*note The Server Buffer::.) and poke
  46. it with the following commands:
  47.  
  48. `O'
  49.      Try to establish connection to the server on the current line
  50.      (`gnus-server-open-server').
  51.  
  52. `C'
  53.      Close the connection (if any) to the server
  54.      (`gnus-server-close-server').
  55.  
  56. `D'
  57.      Mark the current server as unreachable (`gnus-server-deny-server').
  58.  
  59. `R'
  60.      Remove all marks to whether Gnus was denied connection from all
  61.      servers (`gnus-server-remove-denials').
  62.  
  63. 
  64. File: gnus,  Node: Getting News,  Next: Getting Mail,  Prev: The Server Buffer,  Up: Select Methods
  65.  
  66. Getting News
  67. ============
  68.  
  69.    A newsreader is normally used for reading news.  Gnus currently
  70. provides only two methods of getting news - it can read from an NNTP
  71. server, or it can read from a local spool.
  72.  
  73. * Menu:
  74.  
  75. * NNTP::               Reading news from an NNTP server.
  76. * News Spool::         Reading news from the local spool.
  77.  
  78. 
  79. File: gnus,  Node: NNTP,  Next: News Spool,  Up: Getting News
  80.  
  81. NNTP
  82. ----
  83.  
  84.    Subscribing to a foreign group from an NNTP server is rather easy.
  85. You just specify `nntp' as method and the address of the NNTP server as
  86. the, uhm, address.
  87.  
  88.    If the NNTP server is located at a non-standard port, setting the
  89. third element of the select method to this port number should allow you
  90. to connect to the right port.  You'll have to edit the group info for
  91. that (*note Foreign Groups::.).
  92.  
  93.    The name of the foreign group can be the same as a native group.  In
  94. fact, you can subscribe to the same group from as many different servers
  95. you feel like.  There will be no name collisions.
  96.  
  97.    The following variables can be used to create a virtual `nntp'
  98. server:
  99.  
  100. `nntp-server-opened-hook'
  101.      `nntp-server-opened-hook' is run after a connection has been made.
  102.      It can be used to send commands to the NNTP server after it has
  103.      been contacted.  By default is sends the command `MODE READER' to
  104.      the server with the `nntp-send-mode-reader' function.  Another
  105.      popular function is `nntp-send-authinfo', which will prompt you for
  106.      an NNTP password and stuff.
  107.  
  108. `nntp-server-action-alist'
  109.      This is an list of regexps to match on server types and actions to
  110.      be taken when matches are made.  For instance, if you want Gnus to
  111.      beep every time you connect to innd, you could say something like:
  112.  
  113.           (setq nntp-server-action-alist
  114.                 '(("innd" (ding))))
  115.  
  116.      You probably don't want to do that, though.
  117.  
  118.      The default value is
  119.  
  120.             '(("nntpd 1\\.5\\.11t"
  121.                (remove-hook 'nntp-server-opened-hook nntp-send-mode-reader)))
  122.  
  123.      This ensures that Gnus doesn't send the `MODE READER' command to
  124.      nntpd 1.5.11t, since that command chokes that server, I've been
  125.      told.
  126.  
  127. `nntp-maximum-request'
  128.      If the NNTP server doesn't support NOV headers, this backend will
  129.      collect headers by sending a series of `head' commands.  To speed
  130.      things up, the backend sends lots of these commands without
  131.      waiting for reply, and then reads all the replies.  This is
  132.      controlled by the `nntp-maximum-request' variable, and is 400 by
  133.      default.  If your network is buggy, you should set this to 1.
  134.  
  135. `nntp-connection-timeout'
  136.      If you have lots of foreign `nntp' groups that you connect to
  137.      regularly, you're sure to have problems with NNTP servers not
  138.      responding properly, or being too loaded to reply within reasonable
  139.      time.  This is can lead to awkward problems, which can be helped
  140.      somewhat by setting `nntp-connection-timeout'.  This is an integer
  141.      that says how many seconds the `nntp' backend should wait for a
  142.      connection before giving up.  If it is `nil', which is the default,
  143.      no timeouts are done.
  144.  
  145. `nntp-command-timeout'
  146.      If you're running Gnus on a machine that has a dynamically assigned
  147.      address, Gnus may become confused.  If the address of your machine
  148.      changes after connecting to the NNTP server, Gnus will simply sit
  149.      waiting forever for replies from the server.  To help with this
  150.      unfortunate problem, you can set this command to a number.  Gnus
  151.      will then, if it sits waiting longer than that number of seconds
  152.      for a reply from the server, shut down the connection, start a new
  153.      one, and resend the command.  This should hopefully be transparent
  154.      to the user.  A likely number is 30 seconds.
  155.  
  156. `nntp-retry-on-break'
  157.      If this variable is non-`nil', you can also `C-g' if Gnus hangs.
  158.      This will have much the same effect as the command timeout
  159.      described above.
  160.  
  161. `nntp-server-hook'
  162.      This hook is run as the last step when connecting to an NNTP
  163.      server.
  164.  
  165. `nntp-open-server-function'
  166.      This function is used to connect to the remote system.  Two
  167.      pre-made functions are `nntp-open-network-stream', which is the
  168.      default, and simply connects to some port or other on the remote
  169.      system.  The other is `nntp-open-rlogin', which does an rlogin on
  170.      the remote system, and then does a telnet to the NNTP server
  171.      available there.
  172.  
  173. `nntp-rlogin-parameters'
  174.      If you use `nntp-open-rlogin' as the `nntp-open-server-function',
  175.      this list will be used as the parameter list given to `rsh'.
  176.  
  177. `nntp-end-of-line'
  178.      String to use as end-of-line markers when talking to the NNTP
  179.      server.  This is `\r\n' by default, but should be `\n' when using
  180.      `rlogin' to talk to the server.
  181.  
  182. `nntp-rlogin-user-name'
  183.      User name on the remote system when using the `rlogin' connect
  184.      function.
  185.  
  186. `nntp-address'
  187.      The address of the remote system running the NNTP server.
  188.  
  189. `nntp-port-number'
  190.      Port number to connect to when using the `nntp-open-network-stream'
  191.      connect function.
  192.  
  193. `nntp-buggy-select'
  194.      Set this to non-`nil' if your select routine is buggy.
  195.  
  196. `nntp-nov-is-evil'
  197.      If the NNTP server does not support NOV, you could set this
  198.      variable to `t', but `nntp' usually checks whether NOV can be used
  199.      automatically.
  200.  
  201. `nntp-xover-commands'
  202.      List of strings that are used as commands to fetch NOV lines from a
  203.      server.  The default value of this variable is `("XOVER"
  204.      "XOVERVIEW")'.
  205.  
  206. `nntp-nov-gap'
  207.      `nntp' normally sends just one big request for NOV lines to the
  208.      server.  The server responds with one huge list of lines.  However,
  209.      if you have read articles 2-5000 in the group, and only want to
  210.      read article 1 and 5001, that means that `nntp' will fetch 4999 NOV
  211.      lines that you do not want, and will not use.  This variable says
  212.      how big a gap between two consecutive articles is allowed to be
  213.      before the `XOVER' request is split into several request.  Note
  214.      that if your network is fast, setting this variable to a really
  215.      small number means that fetching will probably be slower.  If this
  216.      variable is `nil', `nntp' will never split requests.
  217.  
  218. `nntp-prepare-server-hook'
  219.      A hook run before attempting to connect to an NNTP server.
  220.  
  221. `nntp-async-number'
  222.      How many articles should be pre-fetched when in asynchronous mode.
  223.      If this variable is `t', `nntp' will pre-fetch all the articles
  224.      that it can without bound.  If it is `nil', no pre-fetching will be
  225.      made.
  226.  
  227. `nntp-warn-about-losing-connection'
  228.      If this variable is non-`nil', some noise will be made when a
  229.      server closes connection.
  230.  
  231. 
  232. File: gnus,  Node: News Spool,  Prev: NNTP,  Up: Getting News
  233.  
  234. News Spool
  235. ----------
  236.  
  237.    Subscribing to a foreign group from the local spool is extremely
  238. easy, and might be useful, for instance, to speed up reading groups like
  239. `alt.binaries.pictures.furniture'.
  240.  
  241.    Anyways, you just specify `nnspool' as the method and `' (or
  242. anything else) as the address.
  243.  
  244.    If you have access to a local spool, you should probably use that as
  245. the native select method (*note Finding the News::.).  It is normally
  246. faster than using an `nntp' select method, but might not be.  It
  247. depends.  You just have to try to find out what's best at your site.
  248.  
  249. `nnspool-inews-program'
  250.      Program used to post an article.
  251.  
  252. `nnspool-inews-switches'
  253.      Parameters given to the inews program when posting an article.
  254.  
  255. `nnspool-spool-directory'
  256.      Where `nnspool' looks for the articles.  This is normally
  257.      `/usr/spool/news/'.
  258.  
  259. `nnspool-nov-directory'
  260.      Where `nnspool' will look for NOV files.  This is normally
  261.      `/usr/spool/news/over.view/'.
  262.  
  263. `nnspool-lib-dir'
  264.      Where the news lib dir is (`/usr/lib/news/' by default).
  265.  
  266. `nnspool-active-file'
  267.      The path of the active file.
  268.  
  269. `nnspool-newsgroups-file'
  270.      The path of the group descriptions file.
  271.  
  272. `nnspool-history-file'
  273.      The path of the news history file.
  274.  
  275. `nnspool-active-times-file'
  276.      The path of the active date file.
  277.  
  278. `nnspool-nov-is-evil'
  279.      If non-`nil', `nnspool' won't try to use any NOV files that it
  280.      finds.
  281.  
  282. `nnspool-sift-nov-with-sed'
  283.      If non-`nil', which is the default, use `sed' to get the relevant
  284.      portion from the overview file.  If nil, `nnspool' will load the
  285.      entire file into a buffer and process it there.
  286.  
  287. 
  288. File: gnus,  Node: Getting Mail,  Next: Other Sources,  Prev: Getting News,  Up: Select Methods
  289.  
  290. Getting Mail
  291. ============
  292.  
  293.    Reading mail with a newsreader--isn't that just plain WeIrD? But of
  294. course.
  295.  
  296. * Menu:
  297.  
  298. * Getting Started Reading Mail:: A simple cookbook example.
  299. * Splitting Mail::               How to create mail groups.
  300. * Mail Backend Variables::       Variables for customizing mail handling.
  301. * Fancy Mail Splitting::         Gnus can do hairy splitting of incoming mail.
  302. * Mail and Procmail::            Reading mail groups that procmail create.
  303. * Incorporating Old Mail::       What about the old mail you have?
  304. * Expiring Mail::                Getting rid of unwanted mail.
  305. * Duplicates::                   Dealing with duplicated mail.
  306. * Not Reading Mail::             Using mail backends for reading other files.
  307. * Choosing a Mail Backend::      Gnus can read a variety of mail formats.
  308.  
  309. 
  310. File: gnus,  Node: Getting Started Reading Mail,  Next: Splitting Mail,  Up: Getting Mail
  311.  
  312. Getting Started Reading Mail
  313. ----------------------------
  314.  
  315.    It's quite easy to use Gnus to read your new mail.  You just plonk
  316. the mail backend of your choice into `gnus-secondary-select-methods',
  317. and things will happen automatically.
  318.  
  319.    For instance, if you want to use `nnml' (which is a one file per
  320. mail backend), you could put the following in your `.gnus' file:
  321.  
  322.      (setq gnus-secondary-select-methods
  323.            '((nnml "private")))
  324.  
  325.    Now, the next time you start Gnus, this backend will be queried for
  326. new articles, and it will move all the messages in your spool file to
  327. its directory, which is `~/Mail/' by default.  The new group that will
  328. be created (`mail.misc') will be subscribed, and you can read it like
  329. any other group.
  330.  
  331.    You will probably want to split the mail into several groups, though:
  332.  
  333.      (setq nnmail-split-methods
  334.        '(("junk" "^From:.*Lars Ingebrigtsen")
  335.          ("crazy" "^Subject:.*die\\|^Organization:.*flabby")
  336.          ("other" "")))
  337.  
  338.    This will result in three new mail groups being created:
  339. `nnml:junk', `nnml:crazy', and `nnml:other'.  All the mail that doesn't
  340. fit into the first two groups will be placed in the latter group.
  341.  
  342.    This should be sufficient for reading mail with Gnus.  You might
  343. want to give the other sections in this part of the manual a perusal,
  344. though, especially *note Choosing a Mail Backend::. and *note Expiring
  345. Mail::..
  346.  
  347. 
  348. File: gnus,  Node: Splitting Mail,  Next: Mail Backend Variables,  Prev: Getting Started Reading Mail,  Up: Getting Mail
  349.  
  350. Splitting Mail
  351. --------------
  352.  
  353.    The `nnmail-split-methods' variable says how the incoming mail is to
  354. be split into groups.
  355.  
  356.      (setq nnmail-split-methods
  357.        '(("mail.junk" "^From:.*Lars Ingebrigtsen")
  358.          ("mail.crazy" "^Subject:.*die\\|^Organization:.*flabby")
  359.          ("mail.other" "")))
  360.  
  361.    This variable is a list of lists, where the first element of each of
  362. these lists is the name of the mail group (they do not have to be called
  363. something beginning with `mail', by the way), and the second element is
  364. a regular expression used on the header of each mail to determine if it
  365. belongs in this mail group.
  366.  
  367.    The second element can also be a function.  In that case, it will be
  368. called narrowed to the headers with the first element of the rule as the
  369. argument.  It should return a non-`nil' value if it thinks that the
  370. mail belongs in that group.
  371.  
  372.    The last of these groups should always be a general one, and the
  373. regular expression should *always* be `' so that it matches any mails
  374. that haven't been matched by any of the other regexps.
  375.  
  376.    If you like to tinker with this yourself, you can set this variable
  377. to a function of your choice.  This function will be called without any
  378. arguments in a buffer narrowed to the headers of an incoming mail
  379. message.  The function should return a list of groups names that it
  380. thinks should carry this mail message.
  381.  
  382.    Note that the mail backends are free to maul the poor, innocent
  383. incoming headers all they want to.  They all add `Lines' headers; some
  384. add `X-Gnus-Group' headers; most rename the Unix mbox `From<SPACE>'
  385. line to something else.
  386.  
  387.    The mail backends all support cross-posting.  If several regexps
  388. match, the mail will be "cross-posted" to all those groups.
  389. `nnmail-crosspost' says whether to use this mechanism or not.  Note
  390. that no articles are crossposted to the general (`') group.
  391.  
  392.    `nnmh' and `nnml' makes crossposts by creating hard links to the
  393. crossposted articles.  However, not all files systems support hard
  394. links.  If that's the case for you, set
  395. `nnmail-crosspost-link-function' to `copy-file'.  (This variable is
  396. `add-name-to-file' by default.)
  397.  
  398.    Gnus gives you all the opportunity you could possibly want for
  399. shooting yourself in the foot.  Let's say you create a group that will
  400. contain all the mail you get from your boss.  And then you accidentally
  401. unsubscribe from the group.  Gnus will still put all the mail from your
  402. boss in the unsubscribed group, and so, when your boss mails you "Have
  403. that report ready by Monday or you're fired!", you'll never see it and,
  404. come Tuesday, you'll still believe that you're gainfully employed while
  405. you really should be out collecting empty bottles to save up for next
  406. month's rent money.
  407.  
  408. 
  409. File: gnus,  Node: Mail Backend Variables,  Next: Fancy Mail Splitting,  Prev: Splitting Mail,  Up: Getting Mail
  410.  
  411. Mail Backend Variables
  412. ----------------------
  413.  
  414.    These variables are (for the most part) pertinent to all the various
  415. mail backends.
  416.  
  417. `nnmail-read-incoming-hook'
  418.      The mail backends all call this hook after reading new mail.  You
  419.      can use this hook to notify any mail watch programs, if you want
  420.      to.
  421.  
  422. `nnmail-spool-file'
  423.      The backends will look for new mail in this file.  If this
  424.      variable is `nil', the mail backends will never attempt to fetch
  425.      mail by themselves.  If you are using a POP mail server and your
  426.      name is `larsi', you should set this variable to `po:larsi'.  If
  427.      your name is not `larsi', you should probably modify that
  428.      slightly, but you may have guessed that already, you smart &
  429.      handsome devil!  You can also set this variable to `pop', and Gnus
  430.      will try to figure out the POP mail string by itself.  In any
  431.      case, Gnus will call `movemail' which will contact the POP server
  432.      named in the `MAILHOST' environment variable.  If the POP server
  433.      needs a password, you can either set
  434.      `nnmail-pop-password-required' to `t' and be prompted for the
  435.      password, or set `nnmail-pop-password' to the password itself.
  436.  
  437.      When you use a mail backend, Gnus will slurp all your mail from
  438.      your inbox and plonk it down in your home directory.  Gnus doesn't
  439.      move any mail if you're not using a mail backend--you have to do a
  440.      lot of magic invocations first.  At the time when you have
  441.      finished drawing the pentagram, lightened the candles, and
  442.      sacrificed the goat, you really shouldn't be too surprised when
  443.      Gnus moves your mail.
  444.  
  445. `nnmail-use-procmail'
  446.      If non-`nil', the mail backends will look in
  447.      `nnmail-procmail-directory' for incoming mail.  All the files in
  448.      that directory that have names ending in `nnmail-procmail-suffix'
  449.      will be considered incoming mailboxes, and will be searched for new
  450.      mail.
  451.  
  452. `nnmail-crash-box'
  453.      When the mail backends read a spool file, it is first moved to this
  454.      file, which is `~/.gnus-crash-box' by default.  If this file
  455.      already exists, it will always be read (and incorporated) before
  456.      any other spool files.
  457.  
  458. `nnmail-prepare-incoming-hook'
  459.      This is run in a buffer that holds all the new incoming mail, and
  460.      can be used for, well, anything, really.
  461.  
  462. `nnmail-pre-get-new-mail-hook'
  463. `nnmail-post-get-new-mail-hook'
  464.      These are two useful hooks executed when treating new incoming
  465.      mail--`nnmail-pre-get-new-mail-hook' (is called just before
  466.      starting to handle the new mail) and
  467.      `nnmail-post-get-new-mail-hook' (is called when the mail handling
  468.      is done).  Here's and example of using these two hooks to change
  469.      the default file modes the new mail files get:
  470.  
  471.           (add-hook 'gnus-pre-get-new-mail-hook
  472.                     (lambda () (set-default-file-modes 511)))
  473.           
  474.           (add-hook 'gnus-post-get-new-mail-hook
  475.                     (lambda () (set-default-file-modes 551)))
  476.  
  477. `nnmail-tmp-directory'
  478.      This variable says where to move the incoming mail to while
  479.      processing it.  This is usually done in the same directory that
  480.      the mail backend inhabits (i.e., `~/Mail/'), but if this variable
  481.      is non-`nil', it will be used instead.
  482.  
  483. `nnmail-movemail-program'
  484.      This program is executed to move mail from the user's inbox to her
  485.      home directory.  The default is `movemail'.
  486.  
  487. `nnmail-delete-incoming'
  488.      If non-`nil', the mail backends will delete the temporary incoming
  489.      file after splitting mail into the proper groups.  This is `nil' by
  490.      default for reasons of security.
  491.  
  492. `nnmail-use-long-file-names'
  493.      If non-`nil', the mail backends will use long file and directory
  494.      names.  Groups like `mail.misc' will end up in directories like
  495.      `mail.misc/'.  If it is `nil', the same group will end up in
  496.      `mail/misc/'.
  497.  
  498. `nnmail-delete-file-function'
  499.      Function called to delete files.  It is `delete-file' by default.
  500.  
  501. 
  502. File: gnus,  Node: Fancy Mail Splitting,  Next: Mail and Procmail,  Prev: Mail Backend Variables,  Up: Getting Mail
  503.  
  504. Fancy Mail Splitting
  505. --------------------
  506.  
  507.    If the rather simple, standard method for specifying how to split
  508. mail doesn't allow you to do what you want, you can set
  509. `nnmail-split-methods' to `nnmail-split-fancy'.  Then you can play with
  510. the `nnmail-split-fancy' variable.
  511.  
  512.    Let's look at an example value of this variable first:
  513.  
  514.      ;; Messages from the mailer daemon are not crossposted to any of
  515.      ;; the ordinary groups.  Warnings are put in a separate group
  516.      ;; from real errors.
  517.      (| ("from" mail (| ("subject" "warn.*" "mail.warning")
  518.                         "mail.misc"))
  519.         ;; Non-error messages are crossposted to all relevant
  520.         ;; groups, but we don't crosspost between the group for the
  521.         ;; (ding) list and the group for other (ding) related mail.
  522.         (& (| (any "ding@ifi\\.uio\\.no" "ding.list")
  523.               ("subject" "ding" "ding.misc"))
  524.            ;; Other mailing lists...
  525.            (any "procmail@informatik\\.rwth-aachen\\.de" "procmail.list")
  526.            (any "SmartList@informatik\\.rwth-aachen\\.de" "SmartList.list")
  527.            ;; People...
  528.            (any "larsi@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen"))
  529.         ;; Unmatched mail goes to the catch all group.
  530.         "misc.misc"))")
  531.  
  532.    This variable has the format of a "split".  A split is a (possibly)
  533. recursive structure where each split may contain other splits.  Here are
  534. the four possible split syntaxes:
  535.  
  536. "GROUP"
  537.      If the split is a string, that will be taken as a group name.
  538.  
  539. "(FIELD VALUE SPLIT)"
  540.      If the split is a list, and the first element is a string, then
  541.      that means that if header FIELD (a regexp) contains VALUE (also a
  542.      regexp), then store the message as specified by SPLIT.
  543.  
  544. "(| SPLIT...)"
  545.      If the split is a list, and the first element is `|' (vertical
  546.      bar), then process each SPLIT until one of them matches.  A SPLIT
  547.      is said to match if it will cause the mail message to be stored in
  548.      one or more groups.
  549.  
  550. "(& SPLIT...)"
  551.      If the split is a list, and the first element is `&', then process
  552.      all SPLITs in the list.
  553.  
  554.    In these splits, FIELD must match a complete field name.  VALUE must
  555. match a complete word according to the fundamental mode syntax table.
  556. You can use `.*' in the regexps to match partial field names or words.
  557.  
  558.    FIELD and VALUE can also be lisp symbols, in that case they are
  559. expanded as specified by the variable `nnmail-split-abbrev-alist'.
  560. This is an alist of cons cells, where the car of the cells contains the
  561. key, and the cdr contains a string.
  562.  
  563.    `nnmail-split-fancy-syntax-table' is the syntax table in effect when
  564. all this splitting is performed.
  565.  
  566. 
  567. File: gnus,  Node: Mail and Procmail,  Next: Incorporating Old Mail,  Prev: Fancy Mail Splitting,  Up: Getting Mail
  568.  
  569. Mail and Procmail
  570. -----------------
  571.  
  572.    Many people use `procmail' (or some other mail filter program or
  573. external delivery agent--`slocal', `elm', etc) to split incoming mail
  574. into groups.  If you do that, you should set `nnmail-spool-file' to
  575. `procmail' to ensure that the mail backends never ever try to fetch
  576. mail by themselves.
  577.  
  578.    This also means that you probably don't want to set
  579. `nnmail-split-methods' either, which has some, perhaps, unexpected side
  580. effects.
  581.  
  582.    When a mail backend is queried for what groups it carries, it replies
  583. with the contents of that variable, along with any groups it has figured
  584. out that it carries by other means.  None of the backends (except
  585. `nnmh') actually go out to the disk and check what groups actually
  586. exist.  (It's not trivial to distinguish between what the user thinks is
  587. a basis for a newsgroup and what is just a plain old file or directory.)
  588.  
  589.    This means that you have to tell Gnus (and the backends) what groups
  590. exist by hand.
  591.  
  592.    Let's take the `nnmh' backend as an example.
  593.  
  594.    The folders are located in `nnmh-directory', say, `~/Mail/'.  There
  595. are three folders, `foo', `bar' and `mail.baz'.
  596.  
  597.    Go to the group buffer and type `G m'.  When prompted, answer `foo'
  598. for the name and `nnmh' for the method.  Repeat twice for the two other
  599. groups, `bar' and `mail.baz'.  Be sure to include all your mail groups.
  600.  
  601.    That's it.  You are now set to read your mail.  An active file for
  602. this method will be created automatically.
  603.  
  604.    If you use `nnfolder' or any other backend that store more than a
  605. single article in each file, you should never have procmail add mails to
  606. the file that Gnus sees.  Instead, procmail should put all incoming mail
  607. in `nnmail-procmail-directory'.  To arrive at the file name to put the
  608. incoming mail in, append `nnmail-procmail-suffix' to the group name.
  609. The mail backends will read the mail from these files.
  610.  
  611.    When Gnus reads a file called `mail.misc.spool', this mail will be
  612. put in the `mail.misc', as one would expect.  However, if you want Gnus
  613. to split the mail the normal way, you could set
  614. `nnmail-resplit-incoming' to `t'.
  615.  
  616.    If you use `procmail' to split things directory into an `nnmh'
  617. directory (which you shouldn't do), you should set
  618. `nnmail-keep-last-article' to non-`nil' to prevent Gnus from ever
  619. expiring the final article in a mail newsgroup.  This is quite, quite
  620. important.
  621.  
  622. 
  623. File: gnus,  Node: Incorporating Old Mail,  Next: Expiring Mail,  Prev: Mail and Procmail,  Up: Getting Mail
  624.  
  625. Incorporating Old Mail
  626. ----------------------
  627.  
  628.    Most people have lots of old mail stored in various file formats.  If
  629. you have set up Gnus to read mail using one of the spiffy Gnus mail
  630. backends, you'll probably wish to have that old mail incorporated into
  631. your mail groups.
  632.  
  633.    Doing so can be quite easy.
  634.  
  635.    To take an example: You're reading mail using `nnml' (*note Mail
  636. Spool::.), and have set `nnmail-split-methods' to a satisfactory value
  637. (*note Splitting Mail::.).  You have an old Unix mbox file filled with
  638. important, but old, mail.  You want to move it into your `nnml' groups.
  639.  
  640.    Here's how:
  641.  
  642.   1. Go to the group buffer.
  643.  
  644.   2. Type `G f' and give the path of the mbox file when prompted to
  645.      create an `nndoc' group from the mbox file (*note Foreign
  646.      Groups::.).
  647.  
  648.   3. Type `SPACE' to enter the newly created group.
  649.  
  650.   4. Type `M P b' to process-mark all articles in this group (*note
  651.      Setting Process Marks::.).
  652.  
  653.   5. Type `B r' to respool all the process-marked articles, and answer
  654.      `nnml' when prompted (*note Mail Group Commands::.).
  655.  
  656.    All the mail messages in the mbox file will now also be spread out
  657. over all your `nnml' groups.  Try entering them and check whether things
  658. have gone without a glitch.  If things look ok, you may consider
  659. deleting the mbox file, but I wouldn't do that unless I was absolutely
  660. sure that all the mail has ended up where it should be.
  661.  
  662.    Respooling is also a handy thing to do if you're switching from one
  663. mail backend to another.  Just respool all the mail in the old mail
  664. groups using the new mail backend.
  665.  
  666. 
  667. File: gnus,  Node: Expiring Mail,  Next: Duplicates,  Prev: Incorporating Old Mail,  Up: Getting Mail
  668.  
  669. Expiring Mail
  670. -------------
  671.  
  672.    Traditional mail readers have a tendency to remove mail articles when
  673. you mark them as read, in some way.  Gnus takes a fundamentally
  674. different approach to mail reading.
  675.  
  676.    Gnus basically considers mail just to be news that has been received
  677. in a rather peculiar manner.  It does not think that it has the power to
  678. actually change the mail, or delete any mail messages.  If you enter a
  679. mail group, and mark articles as "read", or kill them in some other
  680. fashion, the mail articles will still exist on the system.  I repeat:
  681. Gnus will not delete your old, read mail.  Unless you ask it to, of
  682. course.
  683.  
  684.    To make Gnus get rid of your unwanted mail, you have to mark the
  685. articles as "expirable".  This does not mean that the articles will
  686. disappear right away, however.  In general, a mail article will be
  687. deleted from your system if, 1) it is marked as expirable, AND 2) it is
  688. more than one week old.  If you do not mark an article as expirable, it
  689. will remain on your system until hell freezes over.  This bears
  690. repeating one more time, with some spurious capitalizations: IF you do
  691. NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES.
  692.  
  693.    You do not have to mark articles as expirable by hand.  Groups that
  694. match the regular expression `gnus-auto-expirable-newsgroups' will have
  695. all articles that you read marked as expirable automatically.  All
  696. articles that are marked as expirable have an `E' in the first column
  697. in the summary buffer.
  698.  
  699.    Let's say you subscribe to a couple of mailing lists, and you want
  700. the articles you have read to disappear after a while:
  701.  
  702.      (setq gnus-auto-expirable-newsgroups
  703.            "mail.nonsense-list\\|mail.nice-list")
  704.  
  705.    Another way to have auto-expiry happen is to have the element
  706. `auto-expire' in the group parameters of the group.
  707.  
  708.    The `nnmail-expiry-wait' variable supplies the default time an
  709. expirable article has to live.  The default is seven days.
  710.  
  711.    Gnus also supplies a function that lets you fine-tune how long
  712. articles are to live, based on what group they are in.  Let's say you
  713. want to have one month expiry period in the `mail.private' group, a one
  714. day expiry period in the `mail.junk' group, and a six day expiry period
  715. everywhere else:
  716.  
  717.      (setq nnmail-expiry-wait-function
  718.            (lambda (group)
  719.             (cond ((string= group "mail.private")
  720.                     31)
  721.                   ((string= group "mail.junk")
  722.                     1)
  723.                   ((string= group "important")
  724.                     'never)
  725.                   (t
  726.                     6))))
  727.  
  728.    The group names that this function is fed are "unadorned" group
  729. names--no `nnml:' prefixes and the like.
  730.  
  731.    The `nnmail-expiry-wait' variable and `nnmail-expiry-wait-function'
  732. function can be either a number (not necessarily an integer) or the
  733. symbols `immediate' or `never'.
  734.  
  735.    You can also use the `expiry-wait' group parameter to selectively
  736. change the expiry period (*note Group Parameters::.).
  737.  
  738.    If `nnmail-keep-last-article' is non-`nil', Gnus will never expire
  739. the final article in a mail newsgroup.  This is to make life easier for
  740. procmail users.
  741.  
  742.    By the way, that line up there about Gnus never expiring
  743. non-expirable articles is a lie.  If you put `total-expire' in the group
  744. parameters, articles will not be marked as expirable, but all read
  745. articles will be put through the expiry process.  Use with extreme
  746. caution.  Even more dangerous is the `gnus-total-expirable-newsgroups'
  747. variable.  All groups that match this regexp will have all read
  748. articles put through the expiry process, which means that *all* old
  749. mail articles in the groups in question will be deleted after a while.
  750. Use with extreme caution, and don't come crying to me when you discover
  751. that the regexp you used matched the wrong group and all your important
  752. mail has disappeared.  Be a *man*!  Or a *woman*!  Whatever you feel
  753. more comfortable with!  So there!
  754.  
  755. 
  756. File: gnus,  Node: Duplicates,  Next: Not Reading Mail,  Prev: Expiring Mail,  Up: Getting Mail
  757.  
  758. Duplicates
  759. ----------
  760.  
  761.    If you are a member of a couple of mailing list, you will sometime
  762. receive two copies of the same mail.  This can be quite annoying, so
  763. `nnmail' checks for and treats any duplicates it might find.  To do
  764. this, it keeps a cache of old `Message-ID's -
  765. `nnmail-message-id-cache-file', which is `~/.nnmail-cache' by default.
  766. The approximate maximum number of `Message-ID's stored there is
  767. controlled by the `nnmail-message-id-cache-length' variable, which is
  768. 1000 by default. (So 1000 `Message-ID's will be stored.) If all this
  769. sounds scary to you, you can set `nnmail-treat-duplicates' to `warn'
  770. (which is what it is by default), and `nnmail' won't delete duplicate
  771. mails.  Instead it will generate a brand new `Message-ID' for the mail
  772. and insert a warning into the head of the mail saying that it thinks
  773. that this is a duplicate of a different message.
  774.  
  775.    This variable can also be a function.  If that's the case, the
  776. function will be called from a buffer narrowed to the message in
  777. question with the `Message-ID' as a parameter.  The function must
  778. return either `nil', `warn', or `delete'.
  779.  
  780.    You can turn this feature off completely by setting the variable to
  781. `nil'.
  782.  
  783.    If you want all the duplicate mails to be put into a special
  784. "duplicates" group, you could do that using the normal mail split
  785. methods:
  786.  
  787.      (setq nnmail-split-fancy
  788.            '(| ;; Messages duplicates go to a separate group.
  789.                ("gnus-warning" "duplication of message" "duplicate")
  790.                ;; Message from daemons, postmaster, and the like to another.
  791.                (any mail "mail.misc")
  792.                ;; Other rules.
  793.                [ ... ] ))
  794.  
  795.    Or something like:
  796.      (setq nnmail-split-methods
  797.            '(("duplicates" "^Gnus-Warning:")
  798.              ;; Other rules.
  799.              [...]))
  800.  
  801.    Here's a neat feature: If you know that the recipient reads her mail
  802. with Gnus, and that she has `nnmail-treat-duplicates' set to `delete',
  803. you can send her as many insults as you like, just by using a
  804. `Message-ID' of a mail that you know that she's already received.
  805. Think of all the fun!  She'll never see any of it!  Whee!
  806.  
  807. 
  808. File: gnus,  Node: Not Reading Mail,  Next: Choosing a Mail Backend,  Prev: Duplicates,  Up: Getting Mail
  809.  
  810. Not Reading Mail
  811. ----------------
  812.  
  813.    If you start using any of the mail backends, they have the annoying
  814. habit of assuming that you want to read mail with them.  This might not
  815. be unreasonable, but it might not be what you want.
  816.  
  817.    If you set `nnmail-spool-file' to `nil', none of the backends will
  818. ever attempt to read incoming mail, which should help.
  819.  
  820.    This might be too much, if, for instance, you are reading mail quite
  821. happily with `nnml' and just want to peek at some old RMAIL file you
  822. have stashed away with `nnbabyl'.  All backends have variables called
  823. backend-`get-new-mail'.  If you want to disable the `nnbabyl' mail
  824. reading, you edit the virtual server for the group to have a setting
  825. where `nnbabyl-get-new-mail' to `nil'.
  826.  
  827.    All the mail backends will call `nn'*`-prepare-save-mail-hook'
  828. narrowed to the article to be saved before saving it when reading
  829. incoming mail.
  830.  
  831. 
  832. File: gnus,  Node: Choosing a Mail Backend,  Prev: Not Reading Mail,  Up: Getting Mail
  833.  
  834. Choosing a Mail Backend
  835. -----------------------
  836.  
  837.    Gnus will read the mail spool when you activate a mail group.  The
  838. mail file is first copied to your home directory.  What happens after
  839. that depends on what format you want to store your mail in.
  840.  
  841. * Menu:
  842.  
  843. * Unix Mail Box::               Using the (quite) standard Un*x mbox.
  844. * Rmail Babyl::                 Emacs programs use the rmail babyl format.
  845. * Mail Spool::                  Store your mail in a private spool?
  846. * MH Spool::                    An mhspool-like backend.
  847. * Mail Folders::                Having one file for each group.
  848.  
  849. 
  850. File: gnus,  Node: Unix Mail Box,  Next: Rmail Babyl,  Up: Choosing a Mail Backend
  851.  
  852. Unix Mail Box
  853. .............
  854.  
  855.    The "nnmbox" backend will use the standard Un*x mbox file to store
  856. mail.  `nnmbox' will add extra headers to each mail article to say
  857. which group it belongs in.
  858.  
  859.    Virtual server settings:
  860.  
  861. `nnmbox-mbox-file'
  862.      The name of the mail box in the user's home directory.
  863.  
  864. `nnmbox-active-file'
  865.      The name of the active file for the mail box.
  866.  
  867. `nnmbox-get-new-mail'
  868.      If non-`nil', `nnmbox' will read incoming mail and split it into
  869.      groups.
  870.  
  871. 
  872. File: gnus,  Node: Rmail Babyl,  Next: Mail Spool,  Prev: Unix Mail Box,  Up: Choosing a Mail Backend
  873.  
  874. Rmail Babyl
  875. ...........
  876.  
  877.    The "nnbabyl" backend will use a babyl mail box (aka. "rmail mbox")
  878. to store mail. `nnbabyl' will add extra headers to each mail article to
  879. say which group it belongs in.
  880.  
  881.    Virtual server settings:
  882.  
  883. `nnbabyl-mbox-file'
  884.      The name of the rmail mbox file.
  885.  
  886. `nnbabyl-active-file'
  887.      The name of the active file for the rmail box.
  888.  
  889. `nnbabyl-get-new-mail'
  890.      If non-`nil', `nnbabyl' will read incoming mail.
  891.  
  892. 
  893. File: gnus,  Node: Mail Spool,  Next: MH Spool,  Prev: Rmail Babyl,  Up: Choosing a Mail Backend
  894.  
  895. Mail Spool
  896. ..........
  897.  
  898.    The "nnml" spool mail format isn't compatible with any other known
  899. format.  It should be used with some caution.
  900.  
  901.    If you use this backend, Gnus will split all incoming mail into
  902. files; one file for each mail, and put the articles into the correct
  903. directories under the directory specified by the `nnml-directory'
  904. variable.  The default value is `~/Mail/'.
  905.  
  906.    You do not have to create any directories beforehand; Gnus will take
  907. care of all that.
  908.  
  909.    If you have a strict limit as to how many files you are allowed to
  910. store in your account, you should not use this backend.  As each mail
  911. gets its own file, you might very well occupy thousands of inodes
  912. within a few weeks.  If this is no problem for you, and it isn't a
  913. problem for you having your friendly systems administrator walking
  914. around, madly, shouting "Who is eating all my inodes?! Who? Who!?!",
  915. then you should know that this is probably the fastest format to use.
  916. You do not have to trudge through a big mbox file just to read your new
  917. mail.
  918.  
  919.    `nnml' is probably the slowest backend when it comes to article
  920. splitting.  It has to create lots of files, and it also generates NOV
  921. databases for the incoming mails.  This makes is the fastest backend
  922. when it comes to reading mail.
  923.  
  924.    Virtual server settings:
  925.  
  926. `nnml-directory'
  927.      All `nnml' directories will be placed under this directory.
  928.  
  929. `nnml-active-file'
  930.      The active file for the `nnml' server.
  931.  
  932. `nnml-newsgroups-file'
  933.      The `nnml' group descriptions file.  *Note Newsgroups File
  934.      Format::.
  935.  
  936. `nnml-get-new-mail'
  937.      If non-`nil', `nnml' will read incoming mail.
  938.  
  939. `nnml-nov-is-evil'
  940.      If non-`nil', this backend will ignore any NOV files.
  941.  
  942. `nnml-nov-file-name'
  943.      The name of the NOV files.  The default is `.overview'.
  944.  
  945. `nnml-prepare-save-mail-hook'
  946.      Hook run narrowed to an article before saving.
  947.  
  948.    If your `nnml' groups and NOV files get totally out of whack, you
  949. can do a complete update by typing `M-x nnml-generate-nov-databases'.
  950. This command will trawl through the entire `nnml' hierarchy, looking at
  951. each and every article, so it might take a while to complete.
  952.  
  953. 
  954. File: gnus,  Node: MH Spool,  Next: Mail Folders,  Prev: Mail Spool,  Up: Choosing a Mail Backend
  955.  
  956. MH Spool
  957. ........
  958.  
  959.    `nnmh' is just like `nnml', except that is doesn't generate NOV
  960. databases and it doesn't keep an active file.  This makes `nnmh' a
  961. *much* slower backend than `nnml', but it also makes it easier to write
  962. procmail scripts for.
  963.  
  964.    Virtual server settings:
  965.  
  966. `nnmh-directory'
  967.      All `nnmh' directories will be located under this directory.
  968.  
  969. `nnmh-get-new-mail'
  970.      If non-`nil', `nnmh' will read incoming mail.
  971.  
  972. `nnmh-be-safe'
  973.      If non-`nil', `nnmh' will go to ridiculous lengths to make sure
  974.      that the articles in the folder are actually what Gnus thinks they
  975.      are.  It will check date stamps and stat everything in sight, so
  976.      setting this to `t' will mean a serious slow-down.  If you never
  977.      use anything but Gnus to read the `nnmh' articles, you do not have
  978.      to set this variable to `t'.
  979.  
  980. 
  981. File: gnus,  Node: Mail Folders,  Prev: MH Spool,  Up: Choosing a Mail Backend
  982.  
  983. Mail Folders
  984. ............
  985.  
  986.    `nnfolder' is a backend for storing each mail group in a separate
  987. file.  Each file is in the standard Un*x mbox format.  `nnfolder' will
  988. add extra headers to keep track of article numbers and arrival dates.
  989.  
  990.    Virtual server settings:
  991.  
  992. `nnfolder-directory'
  993.      All the `nnfolder' mail boxes will be stored under this directory.
  994.  
  995. `nnfolder-active-file'
  996.      The name of the active file.
  997.  
  998. `nnfolder-newsgroups-file'
  999.      The name of the group descriptions file.  *Note Newsgroups File
  1000.      Format::.
  1001.  
  1002. `nnfolder-get-new-mail'
  1003.      If non-`nil', `nnfolder' will read incoming mail.
  1004.  
  1005.    If you have lots of `nnfolder'-like files you'd like to read with
  1006. `nnfolder', you can use the `M-x nnfolder-generate-active-file' command
  1007. to make `nnfolder' aware of all likely files in `nnfolder-directory'.
  1008.  
  1009. 
  1010. File: gnus,  Node: Other Sources,  Next: Combined Groups,  Prev: Getting Mail,  Up: Select Methods
  1011.  
  1012. Other Sources
  1013. =============
  1014.  
  1015.    Gnus can do more than just read news or mail.  The methods described
  1016. below allow Gnus to view directories and files as if they were
  1017. newsgroups.
  1018.  
  1019. * Menu:
  1020.  
  1021. * Directory Groups::   You can read a directory as if it was a newsgroup.
  1022. * Anything Groups::    Dired?  Who needs dired?
  1023. * Document Groups::    Single files can be the basis of a group.
  1024. * SOUP::               Reading SOUP packets "offline".
  1025.  
  1026. 
  1027. File: gnus,  Node: Directory Groups,  Next: Anything Groups,  Up: Other Sources
  1028.  
  1029. Directory Groups
  1030. ----------------
  1031.  
  1032.    If you have a directory that has lots of articles in separate files
  1033. in it, you might treat it as a newsgroup.  The files have to have
  1034. numerical names, of course.
  1035.  
  1036.    This might be an opportune moment to mention `ange-ftp', that most
  1037. wonderful of all wonderful Emacs packages.  When I wrote `nndir', I
  1038. didn't think much about it--a backend to read directories.  Big deal.
  1039.  
  1040.    `ange-ftp' changes that picture dramatically.  For instance, if you
  1041. enter `"/ftp.hpc.uh.edu:/pub/emacs/ding-list/"' as the the directory
  1042. name, ange-ftp will actually allow you to read this directory over at
  1043. `sina' as a newsgroup.  Distributed news ahoy!
  1044.  
  1045.    `nndir' will use NOV files if they are present.
  1046.  
  1047.    `nndir' is a "read-only" backend--you can't delete or expire
  1048. articles with this method.  You can use `nnmh' or `nnml' for whatever
  1049. you use `nndir' for, so you could switch to any of those methods if you
  1050. feel the need to have a non-read-only `nndir'.
  1051.  
  1052. 
  1053. File: gnus,  Node: Anything Groups,  Next: Document Groups,  Prev: Directory Groups,  Up: Other Sources
  1054.  
  1055. Anything Groups
  1056. ---------------
  1057.  
  1058.    From the `nndir' backend (which reads a single spool-like
  1059. directory), it's just a hop and a skip to `nneething', which pretends
  1060. that any arbitrary directory is a newsgroup.  Strange, but true.
  1061.  
  1062.    When `nneething' is presented with a directory, it will scan this
  1063. directory and assign article numbers to each file.  When you enter such
  1064. a group, `nneething' must create "headers" that Gnus can use.  After
  1065. all, Gnus is a newsreader, in case you're forgetting. `nneething' does
  1066. this in a two-step process.  First, it snoops each file in question.
  1067. If the file looks like an article (i.e., the first few lines look like
  1068. headers), it will use this as the head.  If this is just some arbitrary
  1069. file without a head (eg. a C source file), `nneething' will cobble up a
  1070. header out of thin air.  It will use file ownership, name and date and
  1071. do whatever it can with these elements.
  1072.  
  1073.    All this should happen automatically for you, and you will be
  1074. presented with something that looks very much like a newsgroup.
  1075. Totally like a newsgroup, to be precise.  If you select an article, it
  1076. will be displayed in the article buffer, just as usual.
  1077.  
  1078.    If you select a line that represents a directory, Gnus will pop you
  1079. into a new summary buffer for this `nneething' group.  And so on.  You
  1080. can traverse the entire disk this way, if you feel like, but remember
  1081. that Gnus is not dired, really, and does not intend to be, either.
  1082.  
  1083.    There are two overall modes to this action--ephemeral or solid.  When
  1084. doing the ephemeral thing (i.e., `G D' from the group buffer), Gnus
  1085. will not store information on what files you have read, and what files
  1086. are new, and so on.  If you create a solid `nneething' group the normal
  1087. way with `G m', Gnus will store a mapping table between article numbers
  1088. and file names, and you can treat this group like any other groups.
  1089. When you activate a solid `nneething' group, you will be told how many
  1090. unread articles it contains, etc., etc.
  1091.  
  1092.    Some variables:
  1093.  
  1094. `nneething-map-file-directory'
  1095.      All the mapping files for solid `nneething' groups will be stored
  1096.      in this directory, which defaults to `~/.nneething/'.
  1097.  
  1098. `nneething-exclude-files'
  1099.      All files that match this regexp will be ignored.  Nice to use to
  1100.      exclude auto-save files and the like, which is what it does by
  1101.      default.
  1102.  
  1103. `nneething-map-file'
  1104.      Name of the map files.
  1105.  
  1106. 
  1107. File: gnus,  Node: Document Groups,  Next: SOUP,  Prev: Anything Groups,  Up: Other Sources
  1108.  
  1109. Document Groups
  1110. ---------------
  1111.  
  1112.    `nndoc' is a cute little thing that will let you read a single file
  1113. as a newsgroup.  Several files types are supported:
  1114.  
  1115. `babyl'
  1116.      The babyl (rmail) mail box.
  1117.  
  1118. `mbox'
  1119.      The standard Unix mbox file.
  1120.  
  1121. `mmdf'
  1122.      The MMDF mail box format.
  1123.  
  1124. `news'
  1125.      Several news articles appended into a file.
  1126.  
  1127. `rnews'
  1128.      The rnews batch transport format.
  1129.  
  1130. `forward'
  1131.      Forwarded articles.
  1132.  
  1133. `mime-digest'
  1134.      MIME (RFC 1341) digest format.
  1135.  
  1136. `standard-digest'
  1137.      The standard (RFC 1153) digest format.
  1138.  
  1139. `slack-digest'
  1140.      Non-standard digest format--matches most things, but does it badly.
  1141.  
  1142.    You can also use the special "file type" `guess', which means that
  1143. `nndoc' will try to guess what file type it is looking at.  `digest'
  1144. means that `nndoc' should guess what digest type the file is.
  1145.  
  1146.    `nndoc' will not try to change the file or insert any extra headers
  1147. into it--it will simply, like, let you use the file as the basis for a
  1148. group.  And that's it.
  1149.  
  1150.    If you have some old archived articles that you want to insert into
  1151. your new & spiffy Gnus mail backend, `nndoc' can probably help you with
  1152. that.  Say you have an old `RMAIL' file with mail that you now want to
  1153. split into your new `nnml' groups.  You look at that file using
  1154. `nndoc', set the process mark on all the articles in the buffer (`M P
  1155. b', for instance), and then re-spool (`B r') using `nnml'.  If all goes
  1156. well, all the mail in the `RMAIL' file is now also stored in lots of
  1157. `nnml' directories, and you can delete that pesky `RMAIL' file.  If you
  1158. have the guts!
  1159.  
  1160.    Virtual server variables:
  1161.  
  1162. `nndoc-article-type'
  1163.      This should be one of `mbox', `babyl', `digest', `mmdf',
  1164.      `forward', `news', `rnews', `mime-digest', `clari-briefs', or
  1165.      `guess'.
  1166.  
  1167. `nndoc-post-type'
  1168.      This variable says whether Gnus is to consider the group a news
  1169.      group or a mail group.  There are two legal values:  `mail' (the
  1170.      default) and `news'.
  1171.  
  1172. 
  1173. File: gnus,  Node: SOUP,  Prev: Document Groups,  Up: Other Sources
  1174.  
  1175. SOUP
  1176. ----
  1177.  
  1178.    In the PC world people often talk about "offline" newsreaders.  These
  1179. are thingies that are combined reader/news transport monstrosities.
  1180. With built-in modem programs.  Yecchh!
  1181.  
  1182.    Of course, us Unix Weenie types of human beans use things like
  1183. `uucp' and, like, `nntpd' and set up proper news and mail transport
  1184. things like Ghod intended.  And then we just use normal newsreaders.
  1185.  
  1186.    However, it can sometimes be convenient to do something a that's a
  1187. bit easier on the brain if you have a very slow modem, and you're not
  1188. really that interested in doing things properly.
  1189.  
  1190.    A file format called SOUP has been developed for transporting news
  1191. and mail from servers to home machines and back again.  It can be a bit
  1192. fiddly.
  1193.  
  1194.   1. You log in on the server and create a SOUP packet.  You can either
  1195.      use a dedicated SOUP thingie, or you can use Gnus to create the
  1196.      packet with the `O s' command.
  1197.  
  1198.   2. You transfer the packet home.  Rail, boat, car or modem will do
  1199.      fine.
  1200.  
  1201.   3. You put the packet in your home directory.
  1202.  
  1203.   4. You fire up Gnus using the `nnsoup' backend as the native server.
  1204.  
  1205.   5. You read articles and mail and answer and followup to the things
  1206.      you want.
  1207.  
  1208.   6. You do the `G s r' command to pack these replies into a SOUP
  1209.      packet.
  1210.  
  1211.   7. You transfer this packet to the server.
  1212.  
  1213.   8. You use Gnus to mail this packet out with the `G s s' command.
  1214.  
  1215.   9. You then repeat until you die.
  1216.  
  1217.  
  1218.    So you basically have a bipartite system--you use `nnsoup' for
  1219. reading and Gnus for packing/sending these SOUP packets.
  1220.  
  1221. * Menu:
  1222.  
  1223. * SOUP Commands::     Commands for creating and sending SOUP packets
  1224. * SOUP Groups::       A backend for reading SOUP packets.
  1225. * SOUP Replies::      How to enable `nnsoup' to take over mail and news.
  1226.  
  1227. 
  1228. File: gnus,  Node: SOUP Commands,  Next: SOUP Groups,  Up: SOUP
  1229.  
  1230. SOUP Commands
  1231. .............
  1232.  
  1233. `G s b'
  1234.      Pack all unread articles in the current group
  1235.      (`gnus-group-brew-soup').  This command understands the
  1236.      process/prefix convention.
  1237.  
  1238. `G s w'
  1239.      Save all data files (`gnus-soup-save-areas').
  1240.  
  1241. `G s s'
  1242.      Send all replies from the replies packet
  1243.      (`gnus-soup-send-replies').
  1244.  
  1245. `G s p'
  1246.      Pack all files into a SOUP packet (`gnus-soup-pack-packet').
  1247.  
  1248. `G s r'
  1249.      Pack all replies into a replies packet (`nnsoup-pack-replies').
  1250.  
  1251. `O s'
  1252.      This summary-mode command adds the current article to a SOUP packet
  1253.      (`gnus-soup-add-article').  It understands the process/prefix
  1254.      convention.
  1255.  
  1256.    There are a few variables to customize where Gnus will put all these
  1257. thingies:
  1258.  
  1259. `gnus-soup-directory'
  1260.      Directory where Gnus will save intermediate files while composing
  1261.      SOUP packets.  The default is `~/SoupBrew/'.
  1262.  
  1263. `gnus-soup-replies-directory'
  1264.      This is what Gnus will use as a temporary directory while sending
  1265.      our reply packets.  The default is `~/SoupBrew/SoupReplies/'.
  1266.  
  1267. `gnus-soup-prefix-file'
  1268.      Name of the file where Gnus stores the last used prefix.  The
  1269.      default is `gnus-prefix'.
  1270.  
  1271. `gnus-soup-packer'
  1272.      A format string command for packing a SOUP packet.  The default is
  1273.      `tar cf - %s | gzip > $HOME/Soupout%d.tgz'.
  1274.  
  1275. `gnus-soup-unpacker'
  1276.      Format string command for unpacking a SOUP packet.  The default is
  1277.      `gunzip -c %s | tar xvf -'.
  1278.  
  1279. `gnus-soup-packet-directory'
  1280.      Where Gnus will look for reply packets.  The default is `~/'.
  1281.  
  1282. `gnus-soup-packet-regexp'
  1283.      Regular expression matching SOUP reply packets in
  1284.      `gnus-soup-packet-directory'.
  1285.  
  1286.